package com.nnnu.orange.controller.admin;


import com.nnnu.orange.constant.MessageConstants;
import com.nnnu.orange.pojo.dto.BorrowingQueryDto2;
import com.nnnu.orange.result.Result;
import com.nnnu.orange.service.IBorrowingsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 记录用户借阅图书的信息 前端控制器
 * </p>
 *
 * @author zk
 * @since 2024-11-07
 */
@RestController("adminBorrowingsController")
@RequestMapping("/admin/borrowings")
@Slf4j
@Api("管理端借阅图书相关接口")
@RequiredArgsConstructor
public class BorrowingsController {

    private final IBorrowingsService borrowingsService;


    /**
     * 分页查询借阅记录数据
     *
     * @param queryDto dto
     * @return 分页后的数据
     */
    @GetMapping("/list")
    @ApiOperation("分页查询借阅记录数据")
    public Result<?> list(BorrowingQueryDto2 queryDto) {
        log.info("管理员查询借阅记录列表:{}", queryDto);
        return Result.success(borrowingsService.pageList(queryDto), MessageConstants.SELECT_OK);
    }


    /**
     * 管理员获取借阅详细信息
     *
     * @param borrowingId 借阅唯一id
     * @return 借阅实体
     */
    @GetMapping("/{borrowingId}")
    @ApiOperation("管理员获取借阅详细信息")
    public Result<?> detail(@PathVariable Integer borrowingId) {
        log.info("管理员获取借阅详细信息:{}", borrowingId);
        return Result.success(borrowingsService.findById(borrowingId), MessageConstants.SELECT_OK);
    }


    /**
     * 批量删除借阅记录
     *
     * @param ids id列表
     * @return 提示
     */
    @DeleteMapping
    @ApiOperation("批量删除借阅记录")
    public Result<?> deleteBatch(@RequestParam List<Integer> ids) {
        log.info("管理员批量删除借阅记录：{}", ids);
        borrowingsService.deleteBatch(ids);
        return Result.success(MessageConstants.OPERATION_SUCCESSFUL);
    }

}
